package com.zxx.pattern.proxyPattern.daili.statics;

import com.zxx.pattern.proxyPattern.daili.SellPerfume;

/**
 * 小红代理类,她需要代购去售卖香奈儿香水
 *
 * 静态代理违反了开闭原则，
 * 原因是：面对新的需求时，需要修改代理类，增加实现新的接口和方法，导致代理类越来越庞大，变得难以维护。
 * @author zxx on 2020/9/9
 */
public class XiaoHongSellProxy implements SellPerfume {

    //这里实现了 SellPerfume接口，所以不能为了修改而修改


    private SellPerfume sellPerfumeFactory;

    public XiaoHongSellProxy(SellPerfume sellPerfumeFactory) {
        this.sellPerfumeFactory = sellPerfumeFactory;
    }

    @Override
    public void sellPerfume(double price) {
        doSomethingBeforeSell(); // 前置增强

        sellPerfumeFactory.sellPerfume(price);

        doSomethingAfterSell(); // 后置增强
    }

    private void doSomethingBeforeSell() {
        System.out.println("小红代理购买香水前的额外操作...");
    }

    private void doSomethingAfterSell() {
        System.out.println("小红代理购买香水后的额外操作...");
    }

}
